USE [NANS21V]
GO
/****** オブジェクト:  UserDefinedFunction [dbo].[Kiroku]    スクリプト日付: 01/22/2019 15:29:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


--
/*

種目区分と
記録区分と
記録フラグをもらう。

SYUMOKU_MASTERに[記録区分]あり。

混成の場合は サブ種目区分、サブ記録区分を取得すること

 ----------------------------------
 KIROKUKUBUN 
 1:秒 
 2：時分秒 
 3:M 
 4:点 
 5:時分秒
 ----------------------------------
 
 元ソース（CM04000）のMainDispの記録
-------
<param name="recordMethod"> kirokuflg
        /// <para>記録方法を指定します。指定可能な値は以下の通りです。</para>
        /// <para>0：無効 Unknown</para>Unknown　
        /// <para>1：ひとの手による記録</para>Manual　0.0
        /// <para>2：測定機器による記録</para>Automatic　0.00
        /// <para>3：記録手段を問わない</para>Unrelated　0.000
        4？ReturnAsIs  依存せず、戻り値の最適化もしない。３とおなじ？
        5 秒：0
        /// <para>上記以外の値は、0：無効として扱われます。</para>
        //add 5:秒？
-------

元ソースより。
kirokuflg
0：「0.000」何もしない。無効扱い。時分秒もしない。
1：「0.0」人の計測
2：「0.00」機械の計測
3：「0.000」何もしない。小数点何もしない
4：「0.000」何もしない。小数点何もしない
5：「0」秒。小数点削る。
 ----------------------------------
 記録の先頭、時間と分の0埋めはいらない。秒のみ
 ----------------------------------
--※記録は切り上げている！


*/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Kiroku]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[Kiroku]
GO
CREATE FUNCTION [dbo].[Kiroku]
(
	@KIROKU decimal(9,3),
	@SYUMOKUKUBUN int
	,@KIROKUKUBUN int --1:秒 2：時分秒 3:M 4 点 5 時分秒
	,@KIROKUFLG int --0：何もしない。[0.000] 1: 人の計測[0.0] 2:機械の計測[0.00] 3,4:何もしない。[0.000] 5:秒のみ[0]
)
--ALTER FUNCTION [dbo].[Kiroku]
--(
--	@KIROKU decimal(9,3),
--	@SYUMOKUKUBUN int
--	,@KIROKUKUBUN int --1:秒 2：時分秒 3:M 4 点 5 時分秒
--	,@KIROKUFLG int --0：何もしない。[0.000] 1: 人の計測[0.0] 2:機械の計測[0.00] 3,4:何もしない。[0.000] 5:秒のみ[0]
--)
RETURNS VARCHAR(50)
AS
BEGIN
	DECLARE @return varchar(50),
	@second int,
	@minuts int,
	@hour int,
	@kiroku1 int,
	@throwkiroku decimal(8,2)
	,@syousu_moji varchar(10)--表示用
	,@syousuuketa_bai int--倍率調整用
	,@syousuuketa int --0埋め指定用
	,@syousuuketa_zeromoji varchar(4)--0埋め指定用文字列
	,@miri  decimal(9,3) --小数点

	--,@KIROKUKUBUN int --test
	--,@KIROKUFLG int --test
	--SET @KIROKUFLG = 1--test
	--SET @KIROKUKUBUN = 2--test
	--SET @SYUMOKUKUBUN=9--test --9,10,11 ロード

/*	if (@KIROKUKUBUN<-1)
	--どうしても種目区分しかわからない時に種目マスタから取り出す
    --種目noを種目区分に仕込むこと。
	BEGIN
		SELECT @KIROKUKUBUN=KIROKUKUBUN 
		FROM TBL_SYUMOKU_MASTER  as SUBSYUMO 
		where SYUMOKUNO= @SYUMOKUKUBUN
	END
*/
	IF(@KIROKU = 0)
	BEGIN
		SET @return = ''
			RETURN @return
	END


	--切り上げ処理
	DECLARE @wk_kiroku1_trunc  decimal(9,3)
	--記録フラグによる設定
	IF (@KIROKUFLG = 3 OR @KIROKUFLG = 4 )
	BEGIN
		SET @syousuuketa_bai=1000--3ケタまで。何もしないので。出力
		SET @syousuuketa=3;
		SET @syousuuketa_zeromoji='000'
		SET @wk_kiroku1_trunc=@KIROKU 
	END
	ELSE IF (@KIROKUFLG = 0 )
	BEGIN
		SET @syousuuketa_bai=10--小数点1ケタまで
		SET @syousuuketa=1;
		SET @syousuuketa_zeromoji='0'
		SET @wk_kiroku1_trunc=ROUND(@KIROKU + 0.099, @syousuuketa, 1)--
		
	END
	ELSE IF (@KIROKUFLG = 1 )
	BEGIN
		SET @syousuuketa_bai=10--小数点1ケタまで
		SET @syousuuketa=1;
		SET @syousuuketa_zeromoji='0'
		SET @wk_kiroku1_trunc=ROUND(@KIROKU + 0.099, @syousuuketa, 1)--
	END
	ELSE IF (@KIROKUFLG = 2)
	BEGIN
		SET @syousuuketa_bai=100 --2ケタまで
		SET @syousuuketa=2;
		SET @syousuuketa_zeromoji='00'
		SET @wk_kiroku1_trunc=ROUND(@KIROKU + 0.009, @syousuuketa, 1)--
		
	END
	ELSE IF (@KIROKUFLG = 5 )
	BEGIN
		SET @syousuuketa_bai=1 --小数点桁出さない
		SET @syousuuketa=0;
		SET @syousuuketa_zeromoji=''
		SET @wk_kiroku1_trunc=ROUND(@KIROKU + 0.999, @syousuuketa, 1)--
	END
	ELSE 
	BEGIN
		SET @syousuuketa_bai=1000 --何もしない
		SET @syousuuketa=3;
		SET @syousuuketa_zeromoji='000'
		SET @wk_kiroku1_trunc=@KIROKU 
	END

	--各時間取出し	
	SET @kiroku1 = @wk_kiroku1_trunc /1--整数部のみ取り出す
	SET @throwkiroku = @KIROKU/100
	SET @hour = @kiroku1/3600
	SET @minuts = (@kiroku1-@hour*3600) / 60
	SET @second = convert(int,(@kiroku1 % 60) )
	SET @miri=@wk_kiroku1_trunc % 1 --小数点取得

	--小数点取出し
	DECLARE @intwork int
	SET @intwork=convert(int,(@miri * @syousuuketa_bai))
	SET @syousu_moji=convert(varchar(10), @intwork)
	IF (@syousuuketa>0)
		BEGIN--小数点表示作成
			SET @syousu_moji='.'+RIGHT(@syousuuketa_zeromoji + @syousu_moji, @syousuuketa)--0うめ＆右寄せ数字
		END
	ELSE
		BEGIN--小数点表示無し
			SET @syousu_moji=''
		END


	
	--IF (@SYUMOKUKUBUN = 5 OR @SYUMOKUKUBUN = 6 OR @SYUMOKUKUBUN = 7)
	IF (@KIROKUKUBUN= 3 )--m表示
	BEGIN
		IF (@KIROKU = -1)
			SET @return = '×'
		ELSE IF (@KIROKU = -2)
			SET @return = '-'
	--20190212 修正SEQ.999 新表記への対応
		ELSE IF (@KIROKU = -3)
			--SET @return = '/'
			SET @return = 'r'
        --20190122 修正SEQ.10 NAN21Vのコード追加に対応
		ELSE IF (@KIROKU = -4)
			SET @return = '○'
		ELSE
			SET @return = REPLACE(@throwkiroku, '.', 'm')
	END
	ELSE IF (@KIROKUKUBUN= 4 )--得点
	BEGIN
		SET @return = convert(varchar,(convert(int,@KIROKU)))
	END
	ELSE IF (@KIROKUKUBUN= 1 )--秒のみ
	BEGIN
		SET @return = convert(varchar,@kiroku1)+@syousu_moji
	END
	ELSE--時分秒
	BEGIN
		IF (@kiroku1 >= 3600.00)--1時間超えてれば
			SET @return = convert(varchar,@hour)+ ':' + convert(varchar,@minuts)
			+ ':' +RIGHT('00' + convert(varchar,@second), 2)
		ELSE IF (@kiroku1 >= 60.00)--分超えてれば
			SET @return = convert(varchar,@minuts)+ ':' +RIGHT('00' + convert(varchar,@second), 2)
		ELSE--そのまま
		BEGIN
			SET @return = convert(varchar,@kiroku1)
		END

		--ロードなら秒までなので小数点はつけない
		IF (@SYUMOKUKUBUN != 9 AND @SYUMOKUKUBUN != 10 AND @SYUMOKUKUBUN != 11)
		BEGIN
			SET @return = @return+@syousu_moji
		END
--SET @return = @return+'['+convert(varchar,@SYUMOKUKUBUN)+']'


	END
	

--SET @return = @KIROKU

	RETURN @return
	
END
